#pragma once

#include "Effect.h"

#include <string>
using namespace std;
using cv::Size;

/* GaussianBlurEffect class
 * inherits the interface from Effect
 * usec the opencv GaussianBlur function
 */
class GaussianBlurEffect : public Effect{
public:
    /* GaussianBlurEffect c'tor
     * validates the parameters and saves them for later use
     */
	GaussianBlurEffect(string kSize, string sigmaX, string sigmaY, string borderType);
    /* runs GaussianBlur on the given matrix.
     * returns a new Matrix with the manipulated
     * throws: only opencv exceptions
     */
    virtual Mat run(const Mat& src);
private:
    Size kSize;
    double sigmaX;
    double sigmaY;
    int borderType;
};
